<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /*     字符串：“abaasdffggghhjjkkgfddsssss3444343”，问题如下： 
    
    1、 字符串的长度 
    2、 取出指定位置的字符，如：0,3,5,9等 
    3、 查找指定字符是否在以上字符串中存在，如：i，c ，b等 
    4、 替换指定的字符，如：g替换为22,ss替换为b等操作方法 
    5、 截取指定开始位置到结束位置的字符串，如：取得1-5的字符串
    6、 找出以上字符串中出现次数最多的字符和出现的次数 
    7、 遍历字符串，并将遍历出的字符两头添加符号“@” */

    let str = "abaasdffggghhjjkkgfddsssss3444343";

    // 1、 字符串的长度 
    let strLength = str.length;
    console.log(strLength);

    // 2、 取出指定位置的字符，如：0,3,5,9等 
    let str_0 = str.charAt(0);
    let str_3 = str.charAt(3);
    let str_5 = str.charAt(5);
    let str_9 = str.charAt(9);
    console.log(str_0, str_3, str_5, str_9);

    // 3、 查找指定字符是否在以上字符串中存在，如：i，c ，b等 
    let exist_i = str.indexOf('i');
    let exist_c = str.indexOf('c');
    let exist_b = str.indexOf('b');
    console.log(exist_i, exist_c, exist_b);

    // 4、 替换指定的字符，如：g替换为22,ss替换为b等操作方法 
    let replace_g_22 = str.replace('g', '22');
    let replace_ss_b = str.replace('ss', 'b');
    console.log(replace_g_22, replace_ss_b);

    // 5、 截取指定开始位置到结束位置的字符串，如：取得1-5的字符串
    let str_slice_1_5 = str.slice(0, 5);
    let str_substring_1_5 = str.substring(0, 5);
    console.log(str_slice_1_5, str_substring_1_5);

    // 6、 找出以上字符串中出现次数最多的字符和出现的次数 
    let obj = {}
    for (let i = 0; i < str.length; i++) {
        if (obj[str.charAt(i)])
            obj[str.charAt(i)]++;
        else
            obj[str.charAt(i)] = 1;
    }

    // 对象遍历
    // 记录次数
    let num = 0;
    let ch = '';
    for (let k in obj) {
        if (num < obj[k]) {
            num = obj[k];
            ch = k;
        }
    }

    console.log(obj, ch);

    // 简洁方法
    let numArr = str.split('').map((el, index) => str.split(el).length - 1);
    let numMax = Math.max(...numArr);
    let numStr = str.charAt(numArr.indexOf(numMax));
    console.log(`最多的次数：${numMax}`, `最多的字符是：${numStr}`);

    // 7、 遍历字符串，并将遍历出的字符两头添加符号“@”
    let s = '';
    for (let i = 0; i < str.length; i++) {
        s += '@' + str.charAt(i) + '@';
    }
    console.log(s);

</script>

</html>